스트림의 연산

✒️ 2025-05-15 10:50 내용 수정


참고자료 : IT Blog Java 스트림 Stream (1) 총정리, TCPSchool 스트림의 중개연산, TCPSchool 스트림의 최종 연산, JEONG_AMATEUR's Java Stream Collector 반쪽짜리 스트림을 쓰던 그대에게.Advanced Stream, happydaddy's Java Collectors 알아보기

중개 연산

전체 요소 중에서 원하는 데이터만 뽑아내는 데이터 가공 단계

분류 메서드 설명
필터 filter() 조건에 맞는 요소들만 남긴 스트림 반환
distinct() 스트림에서 중복된 요소가 제거된 새로운 스트림을 반환
변환 map() 스트림의 요소들을 주어진 함수로 변환시켜 그 반환값들로 이루어진 새로운 스트림을 반환
flatMap() 각 배열의 각 요소의 반환값을 하나로 합친 새로운 스트림을 반환
제한 limit() 첫 번째 요소부터 전달된 개수만큼의 요소만으로 이루어진 새로운 스트림을 반환
skip() 첫 번째 요소부터 전달된 개수만큼의 요소를 제외한 나머지 요소만으로 이루어진 새로운 스트림을 반환
정렬 sorted() 해당 스트림의 요소를 전달 받은 Comparator를 기준으로 정렬
확인 peek() 결과 스트림으로부터 요소를 소모하여 추가로 명시된 동작을 수행, 원본 스트림은 요소 소모 없음

최종 연산

중개 연산을 통해 변환된 스트림으로 마지막 최종 연산을 수행해 각 요소를 소모한 결과를 표시하는 단계

분류 메서드 설명
출력 forEach() 스트림의 각 요소를 소모하여 명시된 동작을 수행
소모 reduce() 첫 번째와 두 번째 요소를 가지고 연산을 수행한 뒤, 그 결과 세 번째 요소를 가지고 또 다시 연산을 수행
스트림의 모든 요소에 대해 연산 수행 후 결과 반환
검색 findFirst() 해당 스트림에서 첫 번째 요소를 참조하는 Optional 객체를 반환
findAny() 해당 스트림에서 전달 받은 요소를 참조하는 Optional 객체를 반환
검사 anyMatch() 해당 스트림의 일부 요소가 특정 조건을 만족할 경우 true를 반환
allMatch() 해당 스트림의 모든 요소가 특정 조건을 만족할 경우에 true를 반환
nonMatch() 해당 스트림의 모든 요소가 특정 조건을 만족하지 않을 경우에 true를 반환
통계 count() 해당 스트림의 요소의 총 개수를 long 타입의 값으로 반환
max() 해당 스트림의 요소 중에서 가장 큰 값을 가지는 요소를 참조하는 Optional 객체 반환
min() 해당 스트림의 요소 중에서 가장 작은 값을 가지는 요소를 참조하는 Optional 객체 반환
연산 sum() 해당 스트림의 모든 요소의 총 합 반환
average() 해당 스트림의 모든 요소에 대한 평균값
수집 collect() 인수로 전달되는 Collectors 객체에 구현된 방법대로 스트림의 요소를 수집

Collectors 클래스의 메서드

<R,A> R collect(Collector<? super T,A,R> collector);
분류 메서드 설명
스트림->배열,컬렉션 toArray() 스트림을 배열로 변환
toCollection() 스트림을 특정 컬렉션으로 구현
toList() 스트림을 List 인스턴스로 수집
toSet() 스트림을 Set 인스턴스로 수집
toMap() 스트림을 Map 인스턴스로 수집
keyMapper와 valueMapper를 제공해야 함
통계, 연산 counting() 스트림의 모든 요소를 카운트. Stream.count()와 유사
maxBy() 스트림의 가장 큰 요소를 반환
minBy() 스트림의 가장 작은 요소를 반환
summingInt() 추출된 요소의 합계를 반환
averagingInt() 추출된 요소의 평균을 반환
소모와 같은 동작 수행 reducing() 첫 번째와 두 번째 요소를 가지고 연산을 수행한 뒤,
그 결과 세 번째 요소를 가지고 또 다시 연산을 수행
joining() Stream<String>의 요소를 결합
그룹화와 분할 groupingBy() 일부 속성별로 객체를 그룹화하고 그 결과를 Map 인스턴스에 저장
partitioningBy() 스트림 요소의 boolean 값을 key, 컬렉션을 value로 하는 Map 인스턴스로 저장